【Git】回退 commit 版本详解

您所在的位置:网站首页 pacman 回退版本 【Git】回退 commit 版本详解

【Git】回退 commit 版本详解

2023-03-23 10:10| 来源: 网络整理| 查看: 265

文章目录

当我们提交的版本出bug后,如果不影响线上的功能,可能先回退到之前的版本,这时候就要用到git reset这个命令,及他各参数的用法:--hard、--mixed、--soft

假设我们还原某某文件这个版本导致的bug,那我们就要回退到他的上一个版本登录功能大改那里需要注意的是:使用--hard回退版本后,回退的这一次版本上的代码改动会被清空除。 # 查看最近 3 次的 commit 版本信息,排在最上面的就是最新的版本 # log 查看所有版本消息,-3 表示查看最近 3 次提交的版本,按 Q 键退出信息查看 ➜ git:(test) git log -3 # commit:这一个版本的版本编号 # Author:作者 # Date:本次版本提交时的记录时间 commit 758a23df524dff1f11a1e53295ec5ea8d6396f7a (HEAD -> test) Author: 流星 Date: Tue Feb 14 11:36:51 2023 +0800 chore: 还原某某文件 commit 555a38d888d4c3743491ddeb8a4235c4ec3cc49c Author: 流星 Date: Tue Feb 14 11:20:15 2023 +0800 chore: 登录功能大改 commit 6f53d8d8d4d570082e580554b68d36707f504213 Author: 流星 Date: Mon Feb 13 16:45:21 2023 +0800 feat: 完善登录功能 # 根据查看到的版本commit ID,选择回退到相应的版本,这里是回退到:登录功能大改 ➜ git:(test) git reset --hard 555a38d888d4c3743491ddeb8a4235c4ec3cc49c HEAD is now at 555a38d88 chore: 登录功能大改 # 这时候再去查看版本信息,就会发现还原某某文件那个版本已经没有了 ➜ git:(test) git log -2 commit 555a38d888d4c3743491ddeb8a4235c4ec3cc49c (HEAD -> test) Author: 流星 Date: Tue Feb 14 11:20:15 2023 +0800 chore: 登录功能大改 commit 6f53d8d8d4d570082e580554b68d36707f504213 Author: 流星 Date: Mon Feb 13 16:45:21 2023 +0800 feat: 完善登录功能 (END) 还有一个常用的用法就是: # 不撤销 commit,会撤销 add,并删除工作空间改动代码 git reset --hard HEAD # 比较常用,用于清除当前改动 # 不撤销 commit,会撤销 add,不删除工作空间改动代码 git reset --mixed HEAD # 注意用于撤销add # 不撤销 commit,不撤销 add,不删除工作空间改动代码 git reset --soft HEAD # 相当于没啥用

扩展:各参数作用

--hard:表示 ①撤销commit ②撤销add ③删除工作空间改动代码 git reset --hard commitID # commitID 指的是版本号 git reset --hard HEAD~3 # 数字大小代表的是上几个版本 git reset --hard HEAD^^^ # ^号数量代表的是上几个版本 --mixed:表示 ①撤销commit ②撤销add ③不删除工作空间改动代码 git reset --mixed commitID # commitID 指的是版本号 git reset --mixed HEAD~3 # 数字大小代表的是上几个版本 git reset --mixed HEAD^^^ # ^号数量代表的是上几个版本 --soft:表示 ①撤销commit ②不撤销add ③不删除工作空间改动代码 git reset --soft commitID # commitID 指的是版本号 git reset --soft HEAD~3 # 数字大小代表的是上几个版本 git reset --soft HEAD^^^ # ^号数量代表的是上几个版本 补充示例: # 示例:--mixed ➜ git:(test) git reset --mixed HEAD^ Unstaged changes after reset: M packages/views/src/table/viewWrapper/index.vue ➜ git:(test) ✗ git status On branch test Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: packages/views/src/table/viewWrapper/index.vue no changes added to commit (use "git add" and/or "git commit -a") # 示例:--soft ➜ git:(test) git reset --soft HEAD~1 ➜ git:(test) ✗ git status On branch test Changes to be committed: (use "git restore --staged ..." to unstage) modified: packages/views/src/table/viewWrapper/index.vue 指令详解: ➜ git reset -h usage: git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [] or: git reset [-q] [] [--] ... or: git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [] or: git reset --patch [] [--] [...] -q, --quiet be quiet, only report errors --mixed reset HEAD and index --soft reset only HEAD --hard reset HEAD, index and working tree --merge reset HEAD, index and working tree --keep reset HEAD but keep local changes --recurse-submodules[=] control recursive updating of submodules -p, --patch select hunks interactively -N, --intent-to-add record only the fact that removed paths will be added later --pathspec-from-file read pathspec from file --pathspec-file-nul with --pathspec-from-file, pathspec elements are separated with NUL character


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3